auto.waitFor()
var storage = storages.create("按键监控")
var 进程勾选 = storage.get("进程勾选",false)
var 状态勾选 = storage.get("状态勾选",false)
var 包名 = storage.get("包名","")
// com.com.aj.cheshi.soft
var 检测间隔 = storage.get("检测间隔","")

if (!requestScreenCapture()) {
    log("请求截图失败");
    exit()
}
// console.show()
auto.waitFor()

function 查找进程(packagenames) {
    var 返回值 = shell("ps",true).result
    if (返回值.indexOf(packagenames)!=-1) {
        return true
    }
    var 返回值 = shell("ps -A",true).result
    if (返回值.indexOf(packagenames)!=-1) {
        return true
    }

    return false
}


function text_or_desc(str) {
    this.str = str || ""
    this.bool = undefined
    this.clickable = function (bool) {
        if (bool == undefined) {
            bool = true
        }
        this.bool = bool
        return this
    }
    this.exists = function () {
        if (this.findOne(10)) {
            return true
        } else {
            return false
        }
    }
    this.findOne = function (timeout) {
        timeout = timeout || 24 * 60 * 60 * 1000
        var start_time = new Date().getTime()
        while (true) {
            if (new Date().getTime() - start_time > timeout) {
                return null
            }
            if (this.bool != undefined) {
                this.result = text(this.str).clickable(this.bool).findOne(1)
                if (this.result) {
                    return this.result
                }
                this.result = desc(this.str).clickable(this.bool).findOne(1)
                if (this.result) {
                    return this.result
                }
            } else {
                this.result = text(this.str).findOne(1)
                if (this.result) {
                    return this.result

                }
                this.result = desc(this.str).findOne(1)
                if (this.result) {
                    return this.result
                }
            }
            sleep(200)
        }
    }
    return this
}
function 检查运行状态() {
    var ss
    auto.windows.forEach((element) => {
        
        if (element.type == 1 && element.title == null) {
            
            ss = element.layer
        }
    })
    auto.setWindowFilter(function (window) {
        
        return window.layer == ss
    })
    
    var 根元素 = auto.windowRoots[0]
    if (根元素) {
        log(根元素)
        
        根元素 = 根元素.findOne(clickable())
        log(根元素)
        if (!根元素) {
            log("节点异常")
            return 
        }
        log(根元素.bounds())
        var img = images.captureScreen()
        var 找色 =  images.findColor(img, "#ff7dfd9b", {
            region:[根元素.bounds().left,根元素.bounds().top,根元素.bounds().width(),根元素.bounds().height()],
            threshold:50
        })
        log(找色)
        if(找色){
            log('活着')
            return true
        }else{
            log("死了")
        }
        var 根元素个数 = 根元素.childCount()
        if (根元素个数 == 0) {
            click(根元素.bounds().centerX(), 根元素.bounds().centerY())
            sleep(1000)
        }
        var 可点元素个数 = clickable().find().length
        if (可点元素个数 == 5) {
            var 第一个按钮 = clickable().find()[0]
            for (let index = 0; index < 第一个按钮.childCount(); index++) {
                var 开始按钮 = 第一个按钮.child(index)
               
                if (index == 1) {
                    if (开始按钮.text() == "启动") {
                        第一个按钮.click()
                        log("已点击启动")
                        return false
                    } else if (开始按钮.text() == "停止") {
                        log("已启动")
                        clickable().find()[4].click()
                        return true
                    }
                }
            }

        }
    }else{
        log("没有按键小精灵运行")
        var 启动功能= text("启动功能").clickable().findOne(3000)
        if (启动功能) {
            启动功能.click()
            sleep(2000)
            进程状态 = true
        }else{
            log('找不到启动功能按钮')
        }
    }
}

function 启动小精灵() {
    //启动小精灵
    log(包名)
    app.launchPackage(包名)
    log("等待启动功能按钮")
    auto.setWindowFilter(function (window) {

        return true
    })
    var 启动功能= text("启动功能").clickable().findOne(20000)
    if (启动功能) {
        启动功能.click()
        sleep(2000)
        进程状态 = true
    }else{
        log('找不到启动功能按钮')
    }
}


while (true) {
    log("监测中")
    var 进程状态 = 查找进程(包名)
    log("进程状态:"+进程状态)
    if (进程勾选 && 状态勾选) {
        if (!进程状态) {
            启动小精灵()
        }else{
            log("进程存在")
        }
        检查运行状态()
    } 

    if(进程勾选 && !状态勾选){
        if (!进程状态) {
            启动小精灵()
            检查运行状态()
        }else{
            log("进程存在")
        }
    }
    if(!进程勾选 && 状态勾选){
        if (!进程状态) {
            log("不用管")
        }else{
            log("进程存在")
            检查运行状态()
        }
    }
    log("检测间隔:"+检测间隔)
    if (检测间隔) {
        sleep(parseInt(检测间隔))
    }else{
        sleep(5000)
    }
    
}